package com.goldgov.conference.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.goldgov.conference.service.Conference;
import com.goldgov.conference.service.ConferenceBean;
import com.goldgov.conference.service.ConferenceQuery;
import com.goldgov.conference.service.ConferenceUser;

@Mapper
public interface ConferenceDao {
	
	/**
	 * 获取主键
	 * @return
	 */
	Conference getConferenceID();
	/**
	 * 获取会议记录列表
	 * @param query
	 * @return
	 */
	List<Conference> getConferenceList(@Param("query") ConferenceQuery query);
	/**
	 * 根据支部id获取会议记录列表
	 * @param query
	 * @return
	 */
	List<Conference> getConferenceListByOrgId(@Param("query") ConferenceQuery query);
	/**
	 * 获取会议记录列表管理员
	 * @param query
	 * @return
	 */
	List<Conference> getConferenceListByAdmin(@Param("query") ConferenceQuery query);
	/**
	 * 获取会议记录列表管理员
	 * @param query
	 * @return
	 */
	List<Conference> getConferenceListMobileByAdmin(@Param("query") ConferenceQuery query);
	
	/**
	 * 根据主键查询会议记录
	 * @param id
	 * @return
	 */
	Conference getConference(@Param("id")String id);
	
	/**
	 * 添加会议记录
	 * @param conference
	 */
	int addConference(Conference conference);
	/**
	 * 添加会议记录与用户的关系
	 * @param conference
	 */
	int addConferenceUser(List<ConferenceUser> list);
	
	
	/**
	 * 添加考勤记录
	 * @param conferenceAttendance
	 */
//	int addConferenceAttendance(ConferenceAttendance conferenceAttendance);
	
	/**
	 * 取消会议记录
	 * @param ids
	 */
	int cancelConference(@Param("conferenceIDs") String[] conferenceIDs,@Param("activeState") Integer activeState);
	
	/**
	 * 取消指定会议记录
	 * @param id
	 */
	int cancelConferenceByID(@Param("conferenceID") String conferenceID,@Param("publishState") Integer publishState);
	
	/**
	 * 修改会议记录表
	 * @param conference
	 * @return
	 */
	int updateConference(Conference conference);
	/**
	 * 更新会议记录时删除关联表
	 * @return
	 */
	int deleteConferenceAttendance(@Param("conferenceID") String conferenceID,@Param("conferenceUserIDs") String[] conferenceUserIDs);
	/**
	 * 更新会议记录时删除关联表
	 * @return
	 */
	int deleteConferenceUser(@Param("conferenceID") String conferenceID,@Param("conferenceUserIDs") String[] conferenceUserIDs);
	
	/**
	 * 获取当前记录下的关系记录
	 * @date 2018年6月6日 下午12:14:39 
	 * @author hanxiangyu
	 * @param conferenceID
	 * @return
	 */
	List<ConferenceUser> getConferenceUser(@Param("conferenceID") String conferenceID);
	
	/**
	 * 获取已存在的用户与会议的记录
	 * @param ids
	 * @param conferenceID
	 * @return
	 */
	List<ConferenceUser> getExistUserIDs(@Param("ids") String[] ids,@Param("conferenceID") String conferenceID);
	/**
	 * 更新
	 * @param num
	 * @return
	 */
	int updateConferenceNum(@Param("headNum") Integer headNum,@Param("yqNum") Integer yqNum,@Param("qjNum") Integer qjNum);
	/**
	 * 发布取消会议操作
	 * @date 2018年6月11日 上午11:57:05 
	 * @return
	 */
	int publishConference(Conference conference);
	/**
	 * 启用/未启用会议操作
	 * @date 2018年6月11日 上午11:57:05 
	 * @return
	 */
	int activeConference(Conference conference);
	
	int updateNum(Conference conference);
	
	Conference getConferenceById(@Param("id") String id);
	/**
	 * 获取用户参加状态
	 * @date 2018年6月25日 下午3:15:54 
	 * @author hanxiangyu
	 * @param conference
	 * @return
	 */
	Conference getUserStates(Conference conference);
	
	/**
	 * 删除会议
	 * @date 2018年7月8日 上午11:11:01 
	 * @author hanxiangyu
	 * @param ids
	 * @return
	 */
	int deleteConference(@Param("ids") String[] ids);
	/**
	 * 获取会议
	 * @date 2018年7月8日 上午11:11:01 
	 * @author hanxiangyu
	 * @param ids
	 * @return
	 */
	List<Conference> getConListByIds(@Param("ids") String[] ids);
	/**
	 * 手动开始和结束会议
	 * @date 2018年7月24日 下午8:48:38 
	 * @author hanxiangyu
	 * @param conferenceBean
	 * @return
	 */
	int startAndEndConference(ConferenceBean conferenceBean);
	/**
	 * 根据code获取组织结构id
	 * @param scopeCode
	 * @return
	 */
	String getOrgIdByCode(@Param("scopeCode")String scopeCode);
	/**
	 * 根据code获取组织结构id
	 * @param scopeCode
	 * @return
	 */
	String getOrgIdByUserId(@Param("userId")String userId);
}
